package lambda;

import java.io.File;
import java.io.FileFilter;

/*
    *JDK8之后推出了一个新的特性：lambda表达式
    * lambda表达式可以让java编写面向函数式编程
    * 给我们最直观的感受是可以用更精简的语法定义匿名内部类
    * 语法:
    * (参数列表)->{
    * 方法体
    * }
    * 注意：使用lambda表达式创建匿名内部类时实现的接口中只能有一个抽象方法！
    */
public class LambdaDemo {
        public static void main(String[] args) {
//            匿名内部类风格
            FileFilter filter=new FileFilter() {
                @Override
                public boolean accept(File pathname) {
                    return pathname.getName().startsWith(".");
                }
            };
//            lambda表达式写法(省去了接口名和方法名)
            FileFilter filter1=(File f)->{
                return f.getName().startsWith(".");
            };
//            方法参数类表中的参数类型可以不写，如果只有一个参数，那么“()”可以忽略不写
            FileFilter filter2=f->{
                return f.getName().startsWith(".");
            };
//           如果方法体中只有一句代码，那么方法体“{}”可以不写 若这句话有return关键字，那么return也要一同忽略
            FileFilter filter3=f->f.getName().startsWith(".");

//            获取当前目录下名字以“.”开始的子项
            File dir=new File(".");
            File[] subs=dir.listFiles(f->f.getName().startsWith("."));
        }
}
